//package com.hoppinzq;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.openqa.selenium.By;
//import org.openqa.selenium.JavascriptExecutor;
//import org.openqa.selenium.OutputType;
//import org.openqa.selenium.WebDriver;
//import org.openqa.selenium.WebElement;
//
//import com.video.ThreadPool.task.workTask;
//import com.video.bean.Task;
//import com.video.constants.sys_constants;
//import com.video.os.WindowsUtils;
//import com.video.util.Base64Util;
//import com.video.util.WebDriverUtil;
//import com.video.util.codeUtil;
//
//import ch.qos.logback.core.net.SyslogOutputStream;
//
//import org.bytedeco.javacv.FFmpegFrameGrabber;
//import org.bytedeco.javacv.Frame;
//import org.bytedeco.javacv.Java2DFrameConverter;
//
//import javax.imageio.ImageIO;
//
//import java.awt.Image;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import java.io.IOException;
//import java.util.UUID;
//
//public class bibi_browser extends workTask {
//    private WebDriver webDriver;
//    private String username = "";
//    private String password = "";
//    private String path = "";
//    private String content = "";
//    private Task task;
//
//    public bibi_browser(Task task, String username,
//                        String password,
//                        String path,
//                        String content) {
//        this.task = task;
//        this.username = username;
//        this.password = password;
//        this.path = path;
//        this.content = content;
//    }
//
//    @Override
//    public void excute() throws IOException {
//        try {
//            setSerid(task.getSerid());
//            webDriver = WebDriverUtil.getInstance(getSerid()).getDriver();
//            task.setTask_status(1);
//            Map<String, String> result = moblieLogin(username, password);
//            if (result != null
//                    && result.get("result") != null
//                    && result.get("result").toString().equals("success")) {
//                result = UploadVideo(path, content);
//                task.setResult(result);
//            } else {
//                task.setResult(result);
//            }
//            task.setTask_status(3);
//        } catch (Exception e) {
//            Map<String, String> result = new HashMap<String, String>();
//            result.put("result", "error");
//            result.put("msg", "上传视频异常");
//            task.setResult(result);
//            task.setTask_status(3);
//        }
//        sys_constants.taskMap.put(task.getSessionId(), task);
//    }
//
//    @Override
//    public String info() {
//        // TODO Auto-generated method stub
//        return null;
//    }
//
//    public Map<String, String> moblieLogin(String username, String password) {
//        //webDriver.manage().deleteAllCookies();
//        Map<String, String> resultMap = new HashMap<String, String>();
//        try {
//            webDriver.get("https://www.bilibili.com/");
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    10,
//                    1,
//                    By.xpath("//img[contains(@class,'bili-avatar-img bili-avatar-face bili-avatar-img-radius')]"));
//
//            WebElement head_img = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//img[contains(@class,'bili-avatar-img bili-avatar-face bili-avatar-img-radius')]"));
//            if (head_img != null) {
//                resultMap.put("result", "success");
//                resultMap.put("msg", "登录成功");
//                return resultMap;
//            }
//            WebElement login_btn = WebDriverUtil
//                    .getInstance(getSerid()).findElement(
//                            By.xpath("//*[@id='i_cecream']/div[1]/div[1]/ul[2]/li[8]/li/a/div/span"));
//
//            if (login_btn != null) {
//                login_btn.click();
//            }
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    10,
//                    1,
//                    By.xpath("//div[@id='geetest-wrap']"));
//            ////*[@id="layout"]/div/div[2]/p[1]/a
//            WebElement sms_btn = WebDriverUtil
//                    .getInstance(getSerid()).findElement(
//                            By.xpath("//*[@id='geetest-wrap']/div/div[1]/span[2]"));
//
//            if (sms_btn != null) {
//                sms_btn.click();
//            }
//
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    10,
//                    1,
//                    By.xpath("//a[contains(@class,'btn btn-login')]"));
//
//            //输入手机号码
//            WebElement userinput = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//input[@name='tel']"));
//            if (userinput != null) {
//                userinput.sendKeys(username);
//            }
//            //点击发送短信按钮
//            WebElement sendMobile = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//button[contains(@class,'el-button captcha-buttom el-button--primary')]"));
//            if (sendMobile != null) {
//                sendMobile.click();
//                try {
//                    Thread.currentThread().sleep(2000);
//
//                    WebElement backimg = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//img[@class='geetest_item_img']"));
//                    WebElement clickimg = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//div[@class='geetest_tip_img']"));
//                    if (backimg != null) {
//                        String baseimg = "";
//                        if (clickimg != null) {
//                            File src = clickimg.getScreenshotAs(OutputType.FILE);
//                            baseimg = WebDriverUtil
//                                    .getInstance(getSerid())
//                                    .captureElement(src, clickimg);
//                        }
//                        File backsrc = backimg.getScreenshotAs(OutputType.FILE);
//                        String back_img = WebDriverUtil
//                                .getInstance(getSerid())
//                                .captureElement(backsrc, backimg);
//                        //String back_img=Base64Util.imgBase64(backimg.getAttribute("src"));
//                        String result = codeUtil.loadCodeResult("27", back_img, null, null, baseimg);
//                        if (result != null && !result.trim().equals("")) {
//                            String[] xys = result.split("\\|");
//                            if (xys != null && xys.length > 0) {
//                                WebDriverUtil
//                                        .getInstance(getSerid()).moveAndClick(backimg, xys);
//                            }
//                            WebElement que_btn = WebDriverUtil
//                                    .getInstance(getSerid())
//                                    .findElement(By.xpath("//a[@class='geetest_commit']"));
//                            if (que_btn != null) {
//                                que_btn.click();
//                            }
//                        } else {
//                            resultMap.put("result", "error");
//                            resultMap.put("msg", "验证码识别错误,登录失败");
//                            return resultMap;
//                        }
//                    }
//
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//            //输入短信验证码
//            WebElement pwdinput = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//input[contains(@class,'el-input__inner') and contains(@type,'text') and contains(@placeholder,'请输入短信验证码')]"));
//            if (pwdinput != null) {
//                String mobilemsg = "";
//                long time = new Date().getTime();
//                task.setTask_status(2);
//                while (sys_constants.mobilemsg.get(task.getSessionId()) == null
//                        && (new Date().getTime() - time < 5 * 60 * 1000)) {
//                    Thread.currentThread().sleep(5000);
//                }
//                mobilemsg = sys_constants.mobilemsg.get(task.getSessionId());
//                if (mobilemsg != null && !mobilemsg.trim().equals("")) {
//                    pwdinput.sendKeys(mobilemsg);
//                } else {
//                    resultMap.put("result", "error");
//                    resultMap.put("msg", "请输入短信验证码,登录失败");
//                    return resultMap;
//                }
//            }
//            WebElement submit_btn = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//a[contains(@class,'btn btn-login') and contains(string(), '登录')]"));
//            if (submit_btn != null) {
//                submit_btn.click();
//                //error-- 为保证账号安全,请使用手机验证码登录
//                Thread.currentThread().sleep(1000);
//                WebDriverUtil
//                        .getInstance(getSerid()).WebDriverWaitElement(
//                        10,
//                        1,
//                        By.xpath("//a[@class='avatar el-popover__reference']"));
//
//                WebElement img_btn = WebDriverUtil
//                        .getInstance(getSerid())
//                        .findElement(By.xpath("//a[@class='avatar el-popover__reference']"));
//
//                if (img_btn != null) {
//                    resultMap.put("result", "success");
//                    resultMap.put("msg", "登录成功");
//                } else {
//                    resultMap.put("result", "error");
//                    resultMap.put("msg", "登录失败");
//                    return resultMap;
//                }
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            resultMap.put("result", "error");
//            resultMap.put("msg", "登录异常,请求页面异常");
//        }
//        return resultMap;
//    }
//
//    /**
//     * 浏览器登录B站
//     *
//     * @return
//     */
//    public Map<String, String> login(String username, String password) {
//        //webDriver.manage().deleteAllCookies();
//        Map<String, String> resultMap = new HashMap<String, String>();
//        return resultMap;
//    }
//
//    public Map<String, String> UploadVideo(String path, String content) {
//        Map<String, String> resultMap = new HashMap<String, String>();
//        try {
//            webDriver.get("https://member.bilibili.com/platform/upload/video/frame");
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    2,
//                    1,
//                    By.xpath("//div[@class='guide_left__wrap']/div[@class='tips_wrap']/img[@class='jump']"));
//
//            WebElement guide_left_btn = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//div[@class='guide_left__wrap']/div[@class='tips_wrap']/img[@class='jump']"));
//            if (guide_left_btn != null && guide_left_btn.isDisplayed()) {
//                guide_left_btn.click();
//            }
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    2,
//                    1,
//                    By.xpath("//div[@class='guide_right__wrap']/div[@class='tips_wrap']/img[@class='jump']"));
//
//            WebElement guide_right_btn = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//div[@class='guide_right__wrap']/div[@class='tips_wrap']/img[@class='jump']"));
//            if (guide_right_btn != null && guide_right_btn.isDisplayed()) {
//                guide_right_btn.click();
//            }
//
//            WebDriverUtil
//                    .getInstance(getSerid()).WebDriverWaitElement(
//                    10,
//                    1,
//                    By.id("video-up"));
//            WebDriverUtil
//                    .getInstance(getSerid())
//                    .getDriver()
//                    .switchTo()
//                    .frame("videoUpload");
//            ((JavascriptExecutor) WebDriverUtil
//                    .getInstance(getSerid()).getDriver()).executeScript("document.getElementsByTagName('input').style='display:block';");
//            WebElement upload_btn = WebDriverUtil
//                    .getInstance(getSerid())
//                    .findElement(By.xpath("//*[@id='video-up-app']/div/div[2]/div/div[1]/div/div/input"));
//            if (upload_btn != null) {
//                //upload_btn.setAttribute("value", "D:\\CRM生成代码\\VID_20211113_111758.mp4");
//                upload_btn.sendKeys(path);
//
////       List<String> imglist=videoImage(path, 960, 600);
////       WebElement upload_img_btn=WebDriverUtil
////            .getInstance(getSerid())
////            .findElement(By.xpath("//input[@type='file']"));
////       for(String img:imglist){
////        upload_img_btn.sendKeys(img);
////        Thread.currentThread().sleep(5000);
////       }
//                WebDriverUtil
//                        .getInstance(getSerid()).WebDriverWaitElement(
//                        10 * 60,
//                        5,
//                        By.xpath("//span[contains(@class, 'success') and contains(string(),'上传完成')]"));
//
//                WebElement finish_text = WebDriverUtil
//                        .getInstance(getSerid())
//                        .findElement(By.xpath("//span[contains(@class, 'success') and contains(string(),'上传完成')]"));
//                if (finish_text.isDisplayed()) {//上传完成
//                    Thread.currentThread().sleep(1000);//等待5秒加载完
//                    WebElement tag_text = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//div[@class='tag-list']/div[2]"));
//                    if (tag_text != null) {
//                        tag_text.click();
//                    }
//                    WebElement title_text = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//input[contains(@class, 'input-val') and contains(@placeholder, '请输入稿件标题')]"));
//                    if (title_text != null) {
//                        title_text.sendKeys(content);
//                    }
//                    WebElement desc_text = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//div[contains(@class, 'ql-editor ql-blank') and contains(@placeholder, '填写更全面的相关信息，让更多的人能找到你的视频吧')]"));
//                    if (desc_text != null) {
//                        desc_text.sendKeys(content);
//                    }
//                    WebElement submit_btn = WebDriverUtil
//                            .getInstance(getSerid())
//                            .findElement(By.xpath("//span[contains(@class, 'submit-add') and contains(string(),'立即投稿')]"));
//                    if (submit_btn != null) {
//                        Thread.currentThread().sleep(1000);
//                        submit_btn.click();
//                        try {
//                            WebElement success_text = WebDriverUtil
//                                    .getInstance(getSerid())
//                                    .findElement(By.xpath("//div[contains(@class, 'step-des') and contains(string(), '稿件投递成功')]"));
//                            if (success_text != null) {
//                                resultMap.put("result", "success");
//                                resultMap.put("msg", "视频上传成功");
//                            }
//                        } catch (Exception e) {
//                            resultMap.put("result", "success");
//                            resultMap.put("msg", "视频上传成功");
//                        }
//                    }
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            resultMap.put("result", "error");
//            resultMap.put("msg", "视频上传异常,检测是否视频文件");
//        }
//        return resultMap;
//    }
//
//    /**
//     * 截取视频第六帧的图片
//     *
//     * @param filePath 视频路径
//     * @param dir      文件存放的根目录
//     * @return 图片的相对路径 例：pic/1.png
//     */
//    public List<String> videoImage(String filePath, int width, int height) throws Exception {
//        String pngPath = "";
////        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);
//        File file = new File(filePath);
//        String dir = file.getParent() + "/";
//        System.out.println(dir);
//        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(file);
//        List<String> list = new ArrayList<String>();
//        ff.start();
//        int ffLength = ff.getLengthInFrames();
//        Frame f;
//        int i = 0;
//        int m = 0;
//        while (i < ffLength) {
//            f = ff.grabFrame();
//            //截取第6帧
//            if ((i > 5 && i % 20 == 0) && (f.image != null)) {
//                //生成图片的相对路径 例如：pic/uuid.png
//                pngPath = getPngPath();
//                //执行截图并放入指定位置
//                System.out.println("存储图片 ： " + (dir + pngPath));
//                doExecuteFrame(f, dir + pngPath, width, height);
//                list.add(dir + pngPath);
//                m++;
//                if (m > 4) break;
//            }
//            i++;
//        }
//        ff.stop();
//
//        return list;
//    }
//
//    /**
//     * 生成图片的相对路径
//     *
//     * @return 图片的相对路径 例：pic/1.png
//     */
//    private static String getPngPath() {
//        return getUUID() + ".png";
//    }
//
//
//    /**
//     * 生成唯一的uuid
//     *
//     * @return uuid
//     */
//    private static String getUUID() {
//        return UUID.randomUUID().toString().replace("-", "");
//    }
//
//
//    /**
//     * 截取缩略图
//     *
//     * @param f                       Frame
//     * @param targerFilePath:封面图片存放路径
//     */
//    private static void doExecuteFrame(Frame f, String targerFilePath, int width, int height) {
//        String imagemat = "png";
//        if (null == f || null == f.image) {
//            return;
//        }
//        Java2DFrameConverter converter = new Java2DFrameConverter();
//        BufferedImage bi = converter.getBufferedImage(f);
//        BufferedImage thumbimg = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//        thumbimg.getGraphics().drawImage(bi.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
//        File output = new File(targerFilePath);
//        try {
//            ImageIO.write(thumbimg, imagemat, output);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//}